home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
C/C++ Users Group Library 1996 July
/
C-C++ Users Group Library July 1996.iso
/
listings
/
v_09_04
/
9n04014a
< prev
next >
Wrap
Text File
|
1991-03-19
|
999b
|
43 lines
/* _Getloc function */
#include <stdio.h>
#include <string.h>
/* get locale pointer, given category and name */
struct lconv *_Getloc(const char *nmcat, const char *lname)
{
const char *ns, *s;
size_t nl;
struct lconv *p;
{ /* find category component of name */
size_t n;
for (ns = NULL, s = lname; ; s += n + 1)
{ /* look for exact match or LC_ALL */
if (s[n = strcspn(s, ":;")] == '\0' || s[n] == ';')
{ /* memorize first LC_ALL */
if (ns == NULL)
ns = s, nl = n;
if (s[n] == '\0')
break;
}
else if (memcmp(nmcat, s, ++n) == 0)
{ /* found exact category match */
ns = s + n, nl = strcspn(ns, ";");
break;
}
else if (s[n += strcspn(s + n, ";")] == '\0')
break;
}
if (ns == NULL)
return (NULL); /* invalid name */
}
for (p = &_Clocale; p; p = p->_Next)
if (memcmp(p->_Name, ns, nl) == 0
&& p->_Name[nl] == '\0')
return (p);
/* try here to read in locale from file */
return (NULL);
}